Abstract
A multi-paradigm approach (cartography, web3D, etc.) and multi-scalar presentation (macro, meso, micro) of portable tools and ancient iconography with open-source softwares (GitHub, 3DHOP, Blender, R, JavaScript, etc.) for data management within the frame of Linked-Open data (LOD)Ce document Rmarkdown (R + Markdown) propose une approche des solutions web3D open source pour la gestion, la visualisation et la navigation multi-scalaire dans des modèles 3D. Les données sources sont enregistrées dans deux repository GitHub:
Le document alterne modèles 3D, cartes, liens hypertextes, tableaux, etc., avec des “morceaux de code” informatique (i.e. code chunks, en fond grisé).
Nous prenons deux cas d’étude: le premier est lié aux données tracéologiques à trois échelles (macro, méso, micro), le second concerne l’iconographie ancienne à trois échelles (site, support, signe)
travail en cours de réalisation avec l'IMF-CSIC (Barcelone, Espagne)
La tracéologie (use-wear analysis) est l’étude de traces souvent microscopiques sur des objets ayant des dimensions allant de quelques centimètres à plusieurs mètres. Une intégration 3D de ces différentes échelles peut permettre une meilleure compréhension des savoirs-faires (technologie, archéologie du geste, etc.) et une meilleure diffusion de ces connaissances dans la communauté scientifique et auprès du grand public via le web3D.
Sur chaque acquisition 3D, le dessin d’une zone d’intérêt permet de localiser les traces d’utilisation et de lier ce modèle 3D avec un autre modèle 3D obtenu à une échelle inférieure. Dans cet exemple, nous travaillons à l’intégration de modèles 3D issus de trois échelles différentes (M, m, \(\mu\)) acquises sur la surface d’un galet expérimental.
Le dessin des zone d’intérêt (Region of Interest, ou ROI) est une surface 3D dessinée directement sur l’objet depuis un logiciel d’édition 3D (e.g. Blender). Compte-tenu de sa simplicité, elle peut être enregistrée au format .ply (elle pourrait l’être également au format .nxz, v. framework 3DHOP).
Dessin de la ROI (en vert) comme surface 3D sur le modèle 3D (en gris) dans le logiciel Blender
L’objet (échelle supérieure) et la ROI (échelle inférieure) sont tous deux enregistrés au format .ply. L’objet est transformé en .nxz avec l’application Nexus. Ces modèles, sont ensuite intégrés dans le framework 3DHOP et stockés dans le fork du dépôt GitHub zoometh/3DHOP.
Schéma de travail (workflow) pour l’exposition d’un modèle 3D sur le web
Ci-dessous nous présentons une capture d’écran d’un modèle 3D d’un outil expérimental avec la ROI (à gauche en bleu) localisant (grossièrement) les traces d’utilisation. Cette ROI est activable ou desactivable avec le boution 3DHOP . Quand la ROI est clickée, elle peut ouvrir une nouvelle page HTML avec le modèle 3D à l’échelle inférieure
Modèle 3D intégré dans le framework 3DHOP
Ce modèle peut être consulté à cette URL:
L’une des principale difficulté de l’intégration de modèles 3D à différentes échelles est de pouvoir positionner avec une grande précision les différentes fenêtres d’acquisition.
| echelle | mesures | instrument |
|---|---|---|
| macro | cm | Laser |
| meso | mm | HIROX |
| micro | \(\mu\)m | ConFocal |
Acquisition de l’objet avec un laser, ou en photogrammétrie.
Acquisition avec le Laser de lumière structurée smart SCAN 3D Breuckman (M. Mozota, IMF-CSIC)
Acquisition avec le HIROX (IMF-CSIC).
Acquisition avec le ConFocal (IMF-CSIC). Le ConFocal est une solution de microscopie optique 3D qui réalise des piles d’images (stack) de très faibles profondeur de champ (~ 400 nm) appelées ‘sections optiques’
Acquisition avec le ConFocal SensoSCAN (H. Halarashi, IMF-CSIC)
Une partie de la surface active du galet est relevée au ConFocal. Le résultat de l’acquisition est une surface 2.5D de 768 x 516 pixels (2.55 x 1.91 mm).
| optique | profondeur | nb plans | surface étudiée |
|---|---|---|---|
| x5 | 3504 \(\mu\)m | 293 | 768 x 516 px (2.55 x 1.91 mm) |
Cette surface peut être exportée au format .plu (propriétaire) ou .dat (plain text). Le format .dat contient les coordonnées des points (vertices) au format x, y, z. L’extension de ce fichier peut être renommée en .xyz, ouvert avec Meshlab, tranformé en surface (mesh), et importé dans le framework 3DHOP sous la forme d’un .nxz (v. framework 3DHOP)
L’étude systèmes iconographiques anciens a beaucoup à gagner à développer et intégrer une approche mutliscalaire, allant du site aux signes, en passant par les supports (sites, supports, signs). En effet, c’est conventionnellement à ces échelles que ces corpus sont étudiés.
Nous présentons ci-dessous, un essai de FAIRisation des données 3D liées aux graphies anciennes (art rupestre, hiéroglyphes). Ici, nous prenons ces deux (2) sites en exemple:
Pour chacun de ces sites, le logo signale l’existence d’un modèle 3D
La région du mont Bégo (Alpes-Maritimes, France) est surtout connue pour son art rupestre avec un nombre impressionnant de roches gravées, mais le site est aussi l’un des premiers de montagne à être occupé au début du Néolithique (ca. -5300 BC)
Actuellement, les données sont stockées dans une base de données Postgres 13 locale. Ici, nous sélectionnons quelques champs - y compris les coordonnées géographiques - et les exportons dans un fichier .csv stocké dans le dépôt GitHub.
Certaines roches gravées ont été modélisées en 3D par photogrammétrie (logiciel commercial Metashape Photoscan) au format 3D (.obj ou .ply). Une application commerciale comme Sketchfab permet de mettre un modèle 3D en ligne et d’intégrer un conteneur <iframe> vers ce modèle. Comme ici:
Dans le domaine du libre, ces modèles une fois transformés sont manipulés avec le framework 3DHOP et stockés dans le fork du dépôt GitHub zoometh/3DHOP. Dans le code chunk ci-dessous, nous lisons le contenu du dossier ‘minimal’ pour obtenir les noms de ces modèles (stockés en tant que fichiers .nxz dans le dossier ‘models’).
roches.all <- read.csv("data/roches_all.csv")
req <- GET(url.html)
stop_for_status(req)
filelist <- unlist(lapply(content(req)$tree, "[", "path"), use.names = F)
D3.models <- grep("minimal/.*html$", filelist, value = TRUE)
D3.models <- gsub("minimal/", "", D3.models)
D3.models <- sort(gsub(".html$", "", D3.models))
nm.models <- roches.all[roches.all$idroche %in% D3.models, "nom"]
l.nm.models <- paste0(paste0("*", nm.models, "* (", D3.models,")"))
nb.models <- length(D3.models)
Actuellement, il existe 10 modèles 3D: Looped Skin Rock (17_2_59@c), Roche de l’archer (18_1_28@a), Roche de l’anthropomorphe aux bras en zigzag (4_3_16D), Stèle du Chef de Tribu (7_1_8), Roche du Sorcier (8_2_34), Looped Skin Rock (fibule), Roche de l’archer (KIU2610), Roche de l’anthropomorphe aux bras en zigzag (KIU2613), Stèle du Chef de Tribu (lithic_tool), Roche du Sorcier (lithic_tool_cf)
Nous lions les URL des roches gravées modélisées en 3D par jointure sur leur identifiant (e.g., 7_1_8) dans la table des roches – pour les ouvrir directement à partir de la carte Leaflet –, et nous attribuons à ces roches une icône personnalisée (icône ‘3DHOP’)
Certains de ces modèles 3D ont des annotations, comme la Roche de l’homme aux bras en zigzag, ou la Stèle du Chef de Tribu
En Haute-Egypte, le complexe cultuel de Karnak (temples, pylos, chapelles, etc.) se développe au cours du Nouvel Empire, corrélativement au culte d’Amon. Le site est étudié depuis près de 150 ans par une équipe d’égyptologues français. La documentation de ces monuments en 3D, et l’interopérabilité de ces modèles 3D, peut permettre de mieux comprendre l’évolution des hiéroglyphes dans le temps (paléographie)
Le jeu de données correspond à un fichier .csv (locus.csv) conservé sur GitHub
locus <- read.csv("www/locus.csv", sep = ";", row.names = NULL)
kable(locus, "html", escape = FALSE,
caption = "Données Karnak") %>%
kable_styling(bootstrap_options = c("hover", "condensed"), font_size=12)
| KIU | nom | couleur | D3 | X | Y | credit3D |
|---|---|---|---|---|---|---|
| 1027 | Chapelle de Sésostris Ier | white | NA | 32.65720 | 25.72034 | |
| 1192 | Chapelle d’Hatshepsut | red | NA | 32.65768 | 25.72043 | |
| 2610 | Chapelle de Philippe Arrhidée | green | KIU2610 | 32.65867 | 25.71810 | SirCharlesWilson - Sketchfab |
Les liens entre ces données et leurs identifiants KIU (Karnak Identifiant Unique) – qui sont égalment des URL– sont générés par concatenation
url.sith <- "http://sith.huma-num.fr/karnak/"
locus$url <- paste0('<a href=', shQuote(paste0(url.sith, locus$KIU)),
"\ target=\"_blank\"",">", paste0("KIU",locus$KIU), "</a>")
Le (très beau) modèle 3D de KIU2610, nous est fourni par Sketchfab
Ce modèle est ouvert dans Blender et une nouvelle géométrie (un mesh) sur une partie de sa surface pour signaler un panneau (KIU2613). Ce panneau est donc un sous-ensemble de KIU2160
Ces données sont comparées avec les modèles 3D existant dans le repository GitHub zoometh/3DHOP
On cherche à spatialiser les prélèvements fait sur un objet, par exemple une fibule [1]:
Le framework 3DHOP (3D Heritage Online Presenter) c’est – en résumé – un système de pages JavScript/HTML basées sur le WebGL (Web Graphics Library). Dans le repository GitHub zoometh/3DHOP, une structure HTML prend en charge un modèle 3D .nxz ou .ply. Le format .nxz est adapté pour le web3D et le streaming 3D.
Le repository 3DHOP sur GitHub
C’est la même équipe, l’ISTI-CNR, qui a développé 3DHOP et Meshlab. Ces deux outils sont donc destinés à travailler ensemble.
[1] “Iron Age Fibula, Castilla La Mancha, Spain” (https://skfb.ly/6WRI9) by Global Digital Heritage is licensed under Creative Commons Attribution-NonCommercial (http://creativecommons.org/licenses/by-nc/4.0/).